package testes;

import java.util.HashMap;

import junit.framework.Assert;

import org.junit.Test;
import org.mockito.Mockito;

import ModuloFilme.ControladorFilme;
import ModuloFilme.Filme;
import ModuloPessoa.InterfaceRepositorioDePessoas;


public class TesteControladorFilme {

	/*
	 * Teste utilizando mocks e stubs
	 */
	@Test
	public void deveAssociarAtor() {
		InterfaceRepositorioDePessoas iPessoa;
			
		ControladorFilme controlador = new ControladorFilme();
		
	}
	
	@Test
	public void deveRetornarTodosOsDiretores() {
		InterfaceRepositorioDePessoas iPessoa = Mockito.mock(InterfaceRepositorioDePessoas.class);
		
		HashMap<String, InterfaceRepositorioDePessoas> hashMap = new HashMap<String, InterfaceRepositorioDePessoas>();
		
		Mockito.stub(iPessoa.listaDeDiretores()).toReturn(hashMap);
		
		ControladorFilme controlador = new ControladorFilme();
		controlador.setPessoa(iPessoa);
		
		HashMap<String, InterfaceRepositorioDePessoas> resultado = controlador.buscarListaDeDiretores();
		
		Assert.assertEquals(hashMap, resultado);

	}
	
	@Test
	public void deveAssociarAtoresEDiretorAoFilme(){
		InterfaceRepositorioDePessoas ator = Mockito.mock(InterfaceRepositorioDePessoas.class);
		InterfaceRepositorioDePessoas diretor = Mockito.mock(InterfaceRepositorioDePessoas.class);
		HashMap<String, InterfaceRepositorioDePessoas> hashMapAtor = new HashMap<String, InterfaceRepositorioDePessoas>();
		HashMap<String, InterfaceRepositorioDePessoas> hashMapDiretor = new HashMap<String, InterfaceRepositorioDePessoas>();
		hashMapAtor.put("Bruce Willis", ator);
		hashMapDiretor.put("Lamews", diretor);
		Filme filme = new Filme("Duro de matar 4.0","Filme de Acao!","2007","20th Century Fox","Acao","14 anos");
		ControladorFilme controlador = new ControladorFilme();
		controlador.associarAtorEDiretorAoFilme(filme,hashMapAtor,hashMapDiretor);
		
		Assert.assertEquals(ator, filme.getAtores().get("Bruce Willis"));
		Assert.assertEquals(diretor, filme.getDiretores().get("Lamews"));
	}

}
